package com.zhongli.devplatform.utils.im;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zhongli.devplatform.constant.im.TencentIMRestAPIConstant;
import com.zhongli.devplatform.po.common.ReadNoticePO;

import java.util.Random;

/**
 * IM 消息相关工具类
 * @author WuXiCheng
 * @version 1.0
 */
public class IMMessageUtil {

    /**
     * 根据通知创建 IM 推送消息的 消息体
     * @param noticePO
     * @param toAccount
     * @return
     */
    public static JSONObject createNoticeMessage(ReadNoticePO noticePO, String toAccount){
        JSONObject json = new JSONObject();
        json.put("From_Account", TencentIMRestAPIConstant.SYSTEM_HELPER_USER);  // 发送人
        json.put("To_Account", toAccount);                                      // 接收人

        Integer randomNum = new Random().nextInt();
        json.put("MsgRandom", Integer.toUnsignedLong(randomNum));               // 随机数

        Long timeStamp = System.currentTimeMillis() / 1000;
        json.put("MsgTimeStamp", timeStamp);                                    // 时间戳 秒

        JSONObject messageBody = new JSONObject();

        messageBody.put("MsgType", "TIMCustomElem");                            // 发送为自定义消息
        messageBody.put("MsgContent", createMessageContent("notice", noticePO)); // 消息内容: 任务

        JSONArray bodyArray = new JSONArray();
        bodyArray.add(messageBody);
        json.put("MsgBody", bodyArray);

        return json;
    }

    public static JSONObject createMessageContent(String messageType, Object content){
        JSONObject jsonObject = new JSONObject();
        JSONObject contentObj = new JSONObject();
        contentObj.put("type", messageType);
        contentObj.put("data", JSONObject.toJSONString(content));

        jsonObject.put("Data", contentObj.toJSONString());      // 这里需要string类型  IM RestAPI
        jsonObject.put("Desc", "");
        jsonObject.put("Ext", "");
        jsonObject.put("Sound", "");
        return jsonObject;
    }
}
